<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数（方法）</title>
</head>

<body>
    <script>
        sayHi() // function定义的方法会被前置到作用域顶部定义
        console.log('-'.repeat(50));
        // a.b()    a是对象 b就是函数
        // function是定义方法的关键字，sayHi是方法名，()里面方参数，{}是方法体 



        function sayHi(params) {
            console.log('你好');
        }
        sayHi() // 调用方法


        // 将代码写到方法中的好处是，方法只需要定义一次，但可以调用无数次
        sayHi()
        sayHi()
        console.log('-'.repeat(50));

        // 通过function(){}定义一个方法，然后将方法赋值给sayHello

        let sayHello = function () {
            console.log('大家好啊');
        }
        sayHello()

        // 练习：计算方法
        // 该方法，需要传3个参数，分别是数字1，数字2，操作类型
        // 方法的参数，可以设置默认值，调用方法是，不传，就采用默认值
        // 有默认值的参数，必须放在后面

        function calc(num1, num2, type = '+') {
            let sum = 0
            switch (type) {
                case '+':
                    sum = num1 + num2
                    break;
                case '-':
                    sum = num1 - num2
                    break;
                case '*':
                    sum = num1 * num2
                    break;
                case '/':
                    sum = num1 / num2
                    break;
            }
            console.log(`${num1}${type}${num2}=${sum}`);// 100/50=2
        }

        calc(100, 50, '/')

        console.log('-'.repeat(50));

        function repair0(val) {
            val += ''
            return val.length > 1  ? val : '0' + val
        }

        // 返回一个短日期的方法

        function getMinDate(date) {
            if (date) {
                date = new Date(date)
            } else {
                date = new Date()
            }
            let y = date.getFullYear()
            let m = date.getMonth() + 1
            m = repair0(m)
            let d = date.getDate()
            d = repair0(d)
            return y + '-' + m + '-' + d
        }

            // return 关键字，用于在方法中返回一份数据
            // return语句下面的代码，将不会在执行
        // 调用带返回值的方法，需要定义一个变量接收返回的值
        
        let a = getMinDate()
        console.log(a); //2022-08-01
        let b = getMinDate('2022-1-1')
        console.log(b); //2022-01-01


        // 判断是否是闰年的方法

        function isLeepYear(year) {
            if (year % 4 === 0 && year % 100 != 0 || year % 400 === 0) {
                return true
            } else {
                return false
            }
        }
        console.log(isLeepYear(1996));//true
        console.log(isLeepYear(2021));//false



        function xing() {
            let zhou = new Date()
            let xingQi = '星期'+'日一二三四五六'[zhou.getDay()]
            console.log(zhou.getFullYear()+'-'+(zhou.getMonth()+1)+'-'+zhou.getDate()+' '+xingQi);
        }

        xing() 





    </script>
</body>

</html>